A given software program's source code may be written in one or more programming languages. BASIC, C, C++, C#, COBOL, FORTRAN, Java, LISP, Pascal, Perl, SQL, and other high-level languages each offer different features, and each may have particular pros and cons for a given programming effort. In some cases, a developer uses different programming languages for different parts of a program. Programs which are written in multiple high-level programming languages are referred to herein as “mixed language” or “heterogeneous language” programs. Software programs written in a single high-level programming language are thus not mixed language programs. Likewise, programs written in a single high-level language combined with pieces of assembly, byte code, or other low-level code (e.g., for routines that access hardware directly or need to be extremely efficient) do use multiple languages, but they are not considered mixed language programs herein because they use only a single high-level language.
A given program's parts may include components, such as classes or groups of classes, or other object-oriented program parts. Component development may be motivated by factors such as reusability, flexibility, modularity, extensibility, error localization, security localization, standardization, and testability, for example. Components of a program may be commercial off-the-shelf items, or they may be custom components written specifically for the program or for another program. In some cases, different components are written in different programming languages. Hence, a given program may include heterogeneous language components, namely, components written in a mix of respective high-level programming languages. Thus, a developer may use a C# component and a SQL component within a single program, to give just one of many possible examples. A given “program” may include multiple cooperating executable files.